home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-04
/
zbpc_460.zip
/
UTILITY.EXE
/
CRITERR.BAS
< prev
next >
Wrap
BASIC Source File
|
1990-06-16
|
2KB
|
57 lines
00010 ' This program demonstrates a technique to set the MS-DOS critical
00020 ' error handler to your own ZBasic code. See page A-23 in the manual
00030 :
00040 ' save previous vector
00050 :
00060 MACHLG &06,&B8,&3524,&CD,&21,&8C
00070 MACHLG &06,Old_Seg%,&89,&1E,Old_Offset%,&07
00080 :
00090 ' set new vector
00100 :
00110 Seg% = MEM C : Offset% = LINE "Error Routine"
00120 MACHLG &1E,&8B,&16,Offset%,&8E,&1E,Seg%,&B8,&2524,&CD,&21,&1F
00130 :
00140 ' access drive a: to produce an error (leave door open)
00150 :
00160 OPEN "I", 1, "A:TESTFILE.DAT"
00170 :
00180 ' reset error vector to previous value
00190 :
00200 MACHLG &1E,&8B,&16,Old_Offset%,&8E,&1E
00210 MACHLG Old_Seg%,&B8,&2524,&CD,&21,&1F
00220 STOP
00230 :
00240 :
00250 "Error Routine"
00260 ' start of our own critical error handler
00270 :
00280 MACHLG &53,&51,&52,&1E,&06,&8B,&EC,&8E
00290 MACHLG &5E,&1E,&8E,&46,&20,&89,&3E,Error%
00300 :
00310 ' do anything here except disk i/o (see page A-24)
00320 :
00330 RESTORE Error%
00340 READ Error$
00350 PRINT
00360 PRINT Error$; " error!"
00370 PRINT "(Ignore, Retry, Abort)? ";
00380 DO
00390 A$ = INKEY$
00400 A$ = UCASE$(A$)
00410 I% = INSTR(1,"IRA",A$)
00420 UNTIL I% > 0
00430 PRINT A$
00440 Response% = I% - 1
00450 IF I% = 3 THEN STOP
00460 :
00470 "Do DOS"
00480 ' return to DOS
00490 MACHLG &A1,Response%,&07,&1F,&5A,&59,&5B,&CF
00500 :
00510 DATA "Write protected","Unknown unit"
00520 DATA "Drive not ready","Unknown command"
00530 DATA "Data","Bad request structure length"
00540 DATA "Seek","Unknown media type"
00550 DATA "Sector not found","Printer out of paper"
00560 DATA "Write fault","Read fault","General failure"